package main

//同一个函数返回的多个闭包共享该函数的局部变量
//
//func fa1(base int) (func(int) int, func(int) int) {
//	fmt.Println(&base, base)
//
//	ad := func(i int) int {
//		base += 1
//		fmt.Println(&base, base)
//		return base
//	}
//
//	sb := func(i int) int {
//		base -= i
//		fmt.Println(&base, base)
//		return base
//	}
//
//	return ad, sb
//}
//
//func main() {
//	f, g := fa1(0)
//	s, k := fa1(0)
//
//	fmt.Println(f(1), g(1))
//	fmt.Println(s(1), k(1))
//}

//2.4.2
/*
闭包的价值
减少全局变量，在函数调用的过程中隐式地传递共享变量
但是共享变量的坏处是不够直接，不够清晰
PS:除非是特别有价值的地方，一般不推荐使用闭包
*/
